/*------------------------------------------------------------------------------

Paper:			- Black Empowerment and White Mobilization:
					The Effects of the Voting Rights Act

Journal:		- Journal of Political Economy, 2025

Authors:		- Andrea Bernini:
					University of Oxford					
				- Giovanni Facchini:
					University of Nottingham, CEPR, CES-Ifo, CReAM, GEP, IZA
				- Marco Tabellini:
					Harvard Business School, NBER, CEPR, CReAM, IZA
				- Cecilia Testa:
					University of Nottingham, NICEP, CEPR

Instructions:	- README.pdf

------------------------------------------------------------------------------*/

clear all

// Change the directory
global user				"C:\local_directory"

global dataset				"$user\datasets"
global output	            "$user\output"

// .ado files
run "$user\twowaycluster_1.ado"
run "$user\twowaycluster_2.ado"

// Controls
global controls_int "c.family_less_3000#literacy_nc c.unemp60#literacy_nc c.rural_farm60#literacy_nc c.cotton_share_acre#literacy_nc c.school_low#literacy_nc c.pro_black_county#literacy_nc c.anti_black_county#literacy_nc c.gb_tot_1955_b#literacy_nc"
global controls_int_no_cotton "c.family_less_3000#literacy_nc c.unemp60#literacy_nc c.school_low#literacy_nc c.pro_black_county#literacy_nc c.anti_black_county#literacy_nc c.gb_tot_1955_b#literacy_nc"
global controls_int_no_protests "c.family_less_3000#literacy_nc c.unemp60#literacy_nc c.rural_farm60#literacy_nc c.cotton_share_acre#literacy_nc c.school_low#literacy_nc c.gb_tot_1955_b#literacy_nc"

global controls_figure_2 "c.family_less_3000#literacy_nc##ib(#2).year c.unemp60#literacy_nc##ib(#2).year c.rural_farm60#literacy_nc##ib(#2).year c.cotton_share_acre#literacy_nc##ib(#2).year"
global controls_figure_a6 "c.family_less_3000#literacy_nc##ib(#1).year c.unemp60#literacy_nc##ib(#1).year c.rural_farm60#literacy_nc##ib(#1).year c.cotton_share_acre#literacy_nc##ib(#1).year c.school_low#literacy_nc##ib(#1).year c.pro_black_county#literacy_nc##ib(#1).year c.anti_black_county#literacy_nc##ib(#1).year c.gb_tot_1955_b#literacy_nc##ib(#1).year"

// Globals
global black "black_share60_d56 black_share60_d60 black_share60_d64 black_share60_d68 black_share60_d72 black_share60_d76 black_share60_d80"
global black_lit "black_share60_lit_d56 black_share60_lit_d60 black_share60_lit_d64 black_share60_lit_d68 black_share60_lit_d72 black_share60_lit_d76 black_share60_lit_d80"
global black_in_smd_model "black_share60_d56 black_share60_d60 black_share60_d64 black_share60_d68 black_share60_d72 black_share60_d76 black_share60_d80"
global black_lit_in_smd_model "black_share60_lit_d56 black_share60_lit_d60 black_share60_lit_d64 black_share60_lit_d68 black_share60_lit_d72 black_share60_lit_d76 black_share60_lit_d80"
global black_smd_lit "black_share60_SMD_lit_d56 black_share60_SMD_lit_d60 black_share60_SMD_lit_d64 black_share60_SMD_lit_d68 black_share60_SMD_lit_d72 black_share60_SMD_lit_d76 black_share60_SMD_lit_d80"
global black_smd "black_share60_SMD_d56 black_share60_SMD_d60 black_share60_SMD_d64 black_share60_SMD_d68 black_share60_SMD_d72 black_share60_SMD_d76 black_share60_SMD_d80"
global bl_sh_60_time_64_71 "black_share60_d64 black_share60_d66 black_share60_d67 black_share60_d68 black_share60_d69 black_share60_d70 black_share60_d71"
global bl_sh_60_time_64_71_lit "black_share60_lit_d64 black_share60_lit_d66 black_share60_lit_d67 black_share60_lit_d68 black_share60_lit_d69 black_share60_lit_d70 black_share60_lit_d71"
global bl_sh_60_time_60_80 "black_share60_d60 black_share60_d61 black_share60_d62 black_share60_d63 black_share60_d64 black_share60_d65 black_share60_d66 black_share60_d67 black_share60_d68 black_share60_d69 black_share60_d70 black_share60_d71 black_share60_d72 black_share60_d73 black_share60_d74 black_share60_d75 black_share60_d76 black_share60_d77 black_share60_d78 black_share60_d79 black_share60_d80"
global bl_sh_60_time_60_80_lit "black_share60_lit_d60 black_share60_lit_d61 black_share60_lit_d62 black_share60_lit_d63 black_share60_lit_d64 black_share60_lit_d65 black_share60_lit_d66 black_share60_lit_d67 black_share60_lit_d68 black_share60_lit_d69 black_share60_lit_d70 black_share60_lit_d71 black_share60_lit_d72 black_share60_lit_d73 black_share60_lit_d74 black_share60_lit_d75 black_share60_lit_d76 black_share60_lit_d77 black_share60_lit_d78 black_share60_lit_d79 black_share60_lit_d80"



/*
Figure A1. Registration rates by race
*/
cd $dataset
use "dataset_maps_1.dta", clear

// Figure A1, Panel A
cd $dataset
spmap votreg_black_pct_presyears1960 using "countiescoord.dta", id(geo) ndfcolor(white) legstyle(2) legjunction(" - ") legend(ring(1) pos(3) size(*1.8)) title("", size(large) color(edkblue)) ndlabel("No data") fcolor(green*0.2 green*0.6 green green*1.4 green*1.8) clmethod(custom) clbreaks(0 20 40 60 80 100) legorder(lohi) legend(label(2 "0-20%") label(3 "20-40%" ) label(4 "40-60%" ) label(5 "60-80%" ) label(6 "80-100%" ) color(black))
cd $output
graph export "figure_a1_a.pdf", replace
graph export "figure_a1_a.eps", replace

// Figure A1, Panel C
cd $dataset
spmap votreg_white_pct_presyears1960 using "countiescoord.dta", id(geo) ndfcolor(white) legstyle(2) legjunction(" - ") legend(ring(1) pos(3) size(*1.8)) title("", size(large) color(edkblue)) ndlabel("No data") fcolor(green*0.2 green*0.6 green green*1.4 green*1.8) clmethod(custom) clbreaks(0 20 40 60 80 100) legorder(lohi) legend(label(2 "0-20%") label(3 "20-40%" ) label(4 "40-60%" ) label(5 "60-80%" ) label(6 "80-100%" ) color(black))
cd $output
graph export "figure_a1_c.pdf", replace
graph export "figure_a1_c.eps", replace

// Figure A1, Panel B
cd $dataset
spmap votreg_black_pct_presyears1980 using "countiescoord.dta", id(geo) ndfcolor(white) legstyle(2) legjunction(" - ") legend(ring(1) pos(3) size(*1.8)) title("", size(large) color(edkblue)) ndlabel("No data") fcolor(green*0.2 green*0.6 green green*1.4 green*1.8) clmethod(custom) clbreaks(0 20 40 60 80 100) legorder(lohi) legend(label(2 "0-20%") label(3 "20-40%" ) label(4 "40-60%" ) label(5 "60-80%" ) label(6 "80-100%" ) color(black))
cd $output
graph export "figure_a1_b.pdf", replace
graph export "figure_a1_b.eps", replace

// Figure A1, Panel D
cd $dataset
spmap votreg_white_pct_presyears1980 using "countiescoord.dta", id(geo) ndfcolor(white) legstyle(2) legjunction(" - ") legend(ring(1) pos(3) size(*1.8)) title("", size(large) color(edkblue)) ndlabel("No data") fcolor(green*0.2 green*0.6 green green*1.4 green*1.8) clmethod(custom) clbreaks(0 20 40 60 80 100) legorder(lohi) legend(label(2 "0-20%") label(3 "20-40%" ) label(4 "40-60%" ) label(5 "60-80%" ) label(6 "80-100%" ) color(black))
cd $output
graph export "figure_a1_d.pdf", replace
graph export "figure_a1_d.eps", replace



/*
Figure A2. Black population in the sample
*/

// Figure A2, Panel A
cd $dataset
use "dataset_maps_1.dta", clear

cd $dataset
spmap black_share60 using "countiescoord.dta", id(geo) ndfcolor(white) legstyle(2) legjunction(" - ") legend(ring(1) pos(3) size(*1.8)) title("", size(large) color(edkblue)) ndlabel("No data") fcolor(green*0.2 green*0.6 green green*1.4 green*1.8 green*2.5) clmethod(custom) clbreaks(0 10 20 30 40 50 100) legorder(lohi) legend(label(2 "0-10%") label(3 "10-20%") label(4 "20-30%" ) label(5 "30-40%" ) label(6 "40-50%" ) label(7 "50-100%" ) color(black))
cd $output
graph export "figure_a2_a.pdf", replace
graph export "figure_a2_a.eps", replace


// Figure A2, Panel B
cd $dataset
use "dataset_maps_2.dta", clear

cd $dataset
spmap black_share60 using "countiescoord.dta", id(geo) ndfcolor(white) legstyle(2) legjunction(" - ") legend(ring(1) pos(3) size(*1.8)) title("", size(large) color(edkblue)) ndlabel("No border") fcolor(green*0.2 green*0.6 green green*1.4 green*1.8 green*2.5) clmethod(custom) clbreaks(0 10 20 30 40 50 100) legorder(lohi) legend(label(2 "0-10%") label(3 "10-20%") label(4 "20-30%" ) label(5 "30-40%" ) label(6 "40-50%" ) label(7 "50-100%" ) color(black))
cd $output
graph export "figure_a2_b.pdf", replace
graph export "figure_a2_b.eps", replace



/*
Figure A3. Discontinuity around the 50% turnout rate
*/
cd $dataset
use "dataset_wide_2.dta", clear

// Figure A3, Panel A
preserve
tempname memhold
tempfile results
postfile `memhold' beta se window number using `results'  
forvalues window = 10(13.33333)50 {  
display "Window size: `window'"	
local outcome = "ch_ln_votreg_black_pct_pres"
local upper = 50 + `window'
local lower = 50 - `window'
gen bwidth = 1 if tnt_pres_tot_1964 >= `lower' & tnt_pres_tot_1964 <= `upper'
xi: reg ch_ln_votreg_black_pct_pres black_share60_lit_nc black_share60 $controls_int ibn.STATE [aweight=pop1960] if bwidth == 1, nocon robust cluster(judicial_divisions_id)
sum `outcome' if bwidth == 1
post `memhold' (_b[black_share60_lit_nc]) (_se[black_share60_lit_nc]) (`window') (`r(N)')
capture drop bwidth
}
postclose `memhold'
use `results', clear
gen sortid = _n
gen cihi = beta + 1.645*se
gen cilo = beta - 1.645*se
gen line0 = 0
#delimit;
twoway 
(line cihi window, lpattern(dash) lcolor(black) lwidth(thin) yaxis(1))
(line cilo window, lpattern(dash) lcolor(black) lwidth(thin) yaxis(1))
(line beta window, lcolor(black) lwidth(thick) yaxis(1) yline(0 , axis(1) lpattern(dot) lcolor(gs5) lwidth(medthick)))
(scatter number window, msymbol(O) msize(medium) cmissing(n) mcolor(gray) lwidth(thin) yaxis(2))
(line line0 window, lwidth(0.2) lpattern(dash) lcolor(cranberry) yaxis(1)),
ylabel( , format(%9.3f) nogrid labsize(small) axis(1))
ylabel( , nogrid labsize(small) axis(2))
xlabel( , format(%9.0f) nogrid labsize(small) tlength(0))
ytitle("Long-differences estimate", angle(hori) color(black) size(medium) axis(1)) 
ytitle("Number of counties (observations)", angle(hori) color(black) size(medium) axis(2)) 
xtitle("Bandwidth on each side of the 50% presidential turnout rate in 1964", color(black) size(medium))
xscale() yscale(axis(1)) yscale(axis(2))
graphregion(fcolor(white) lcolor(white)) plotregion(fcolor(white) lstyle(none) lcolor(white) ilstyle(none))
title("", size(large)) subtitle("", color(black) justification(center))
legend(off);
#delimit cr
cd $output
graph export "figure_a3_a.pdf", replace
graph export "figure_a3_a.eps", replace
restore

// Figure A3, Panel B
preserve
tempname memhold
tempfile results
postfile `memhold' beta se window number using `results'  
forvalues window = 10(13.33333)50 {  
display "Window size: `window'"	
local outcome = "ch_ln_votreg_white_pct_pres"
local upper = 50 + `window'
local lower = 50 - `window'
gen bwidth = 1 if tnt_pres_tot_1964 >= `lower' & tnt_pres_tot_1964 <= `upper'
xi: reg ch_ln_votreg_white_pct_pres black_share60_lit_nc black_share60 $controls_int ibn.STATE [aweight=pop1960] if bwidth == 1, nocon robust cluster(judicial_divisions_id)
sum `outcome' if bwidth == 1
post `memhold' (_b[black_share60_lit_nc]) (_se[black_share60_lit_nc]) (`window') (`r(N)')
capture drop bwidth
}
postclose `memhold'
use `results', clear
gen sortid = _n
gen cihi = beta + 1.645*se
gen cilo = beta - 1.645*se
gen line0 = 0
#delimit;
twoway 
(line cihi window, lpattern(dash) lcolor(black) lwidth(thin) yaxis(1))
(line cilo window, lpattern(dash) lcolor(black) lwidth(thin) yaxis(1))
(line beta window, lcolor(black) lwidth(thick) yaxis(1) yline(0 , axis(1) lpattern(dot) lcolor(gs5) lwidth(medthick)))
(scatter number window, msymbol(O) msize(medium) cmissing(n) mcolor(gray) lwidth(thin) yaxis(2))
(line line0 window, lwidth(0.2) lpattern(dash) lcolor(cranberry) yaxis(1)),
ylabel( , format(%9.3f) nogrid labsize(small) axis(1))
ylabel( , nogrid labsize(small) axis(2))
xlabel( , format(%9.0f) nogrid labsize(small) tlength(0))
ytitle("Long-differences estimate", angle(hori) color(black) size(medium) axis(1)) 
ytitle("Number of counties (observations)", angle(hori) color(black) size(medium) axis(2)) 
xtitle("Bandwidth on each side of the 50% presidential turnout rate in 1964", color(black) size(medium))
xscale() yscale(axis(1)) yscale(axis(2))
graphregion(fcolor(white) lcolor(white)) plotregion(fcolor(white) lstyle(none) lcolor(white) ilstyle(none))
title("", size(large)) subtitle("", color(black) justification(center))
legend(off);
#delimit cr
cd $output
graph export "figure_a3_b.pdf", replace
graph export "figure_a3_b.eps", replace
restore



/*
Figure A4. Registration rates: Difference in the gradient and SMD
*/
cd $dataset
use "dataset_panel_1.dta", clear

// Model 1
xi, prefix(Tr): xtreg ln_votreg_white_pct_pres $black $black_lit $controls_figure_2 dummy_STATE_NC1_YEAR1-dummy_STATE_NC11_YEAR7 [aweight=pop1960] if year >= 1956 & year <= 1980 & FIPSTATE != 28, fe robust cluster(judicial_divisions_id)
estimates store est_wh_model_1

// Model 2
xi, prefix(Tr): xtreg ln_votreg_white_pct_pres $black_smd_lit $black_smd $black_in_smd_model $black_lit_in_smd_model $controls_figure_2 dummy_STATE_NC1_YEAR1-dummy_STATE_NC11_YEAR7 [aweight=pop1960] if year >= 1956 & year <= 1980 & year != 1976 & FIPSTATE != 28, fe robust cluster(judicial_divisions_id)
estimates store est_wh_model_2

// Model 3
rename black_share60_lit_d56 black_lit_56
rename black_share60_lit_d60 black_lit_60
rename black_share60_lit_d64 black_lit_64
rename black_share60_lit_d68 black_lit_68
rename black_share60_lit_d72 black_lit_72
rename black_share60_lit_d76 black_lit_76
rename black_share60_lit_d80 black_lit_80

rename black_share60_SMD_lit_d56 black_share60_lit_d56
rename black_share60_SMD_lit_d60 black_share60_lit_d60
rename black_share60_SMD_lit_d64 black_share60_lit_d64
rename black_share60_SMD_lit_d68 black_share60_lit_d68
rename black_share60_SMD_lit_d72 black_share60_lit_d72
rename black_share60_SMD_lit_d76 black_share60_lit_d76
rename black_share60_SMD_lit_d80 black_share60_lit_d80

global black_lit_in_smd_model "black_lit_56 black_lit_60 black_lit_64 black_lit_68 black_lit_72 black_lit_76 black_lit_80"
global black_smd_lit "black_share60_lit_d56 black_share60_lit_d60 black_share60_lit_d64 black_share60_lit_d68 black_share60_lit_d72 black_share60_lit_d76 black_share60_lit_d80"

xi, prefix(Tr): xtreg ln_votreg_white_pct_pres $black_smd_lit $black_smd $black_in_smd_model $black_lit_in_smd_model $controls_figure_2 dummy_STATE_NC1_YEAR1-dummy_STATE_NC11_YEAR7 [aweight=pop1960] if year >= 1956 & year <= 1980 & year != 1976 & FIPSTATE != 28, fe robust cluster(judicial_divisions_id)
estimates store est_wh_model_3

coefplot (est_wh_model_1 , offset(-0.04) msymbol(O) color(gs6) ciopts(lwidth(*1.5) lcolor(gs6) recast(rcap)) label(Black share, 1960 X VRA in Baseline Model)) ///
(est_wh_model_2 , offset(0.04) msymbol(S) color(gs9) ciopts(lwidth(*1.5) lcolor(gs9) recast(rcap)) label(Black share, 1960 X VRA in SMD Model)) ///
(est_wh_model_3 , offset(0.12) msymbol(Sh) color(gs12) ciopts(lwidth(*1.5) lcolor(gs12) recast(rcap)) label(Black share, 1960 X VRA X SMD in SMD Model)), ///
keep( $black_lit $black_smd_lit ) ///
levels(95) ///
ylabel(, nogrid) graphregion(color(white)) ///
vertical xline(3.3, lwidth(0.2) lcolor(gray) lpattern(solid)) ///
yline(0, lwidth(0.2) lpattern(dash) lcolor(cranberry)) format(%9.2f) ///
color(black) lwidth(thick) ///
omitted ytitle("(ln) registration rate") ///
yscale(range(-0.03 0.03)) ylabel(-0.03(0.01)0.03) ///
legend(position(6) rows(3) size(small) region(lcolor(white))) byopts(compact rows(1))
cd $output
graph export "figure_a4.pdf", name("Graph") replace
graph export "figure_a4.eps", name("Graph") replace


/*
Figure A5. Quadruple difference models: Electoral rules (SMD)
*/
cd $dataset
use "dataset_quadruple_diff_1.dta", clear

global variables_quad "edulevwhi edulevbla avgempwhi avgempbla naacp_pcb kkk_pcw lynching urban_sh40_white urban_sh40_black SMD no_school_meanbl no_school_meanwh"

// Figure A5, Panel A
foreach var in $variables_quad {
xi: reg ch_ln_votreg_black_pct_pres SMD_std_* SMD_std `var'_std_blsh60_lit `var'_std_blsh60 `var'_std `var'_std_lit black_share60_lit_nc black_share60 $controls_int ibn.STATE [aweight=pop1960], nocon robust cluster(judicial_divisions_id)
est sto `var'_black_smd
}

coefplot (kkk_pcw_black_smd, label(KKK) msymbol(Dh) msize(medium) color(black) ciopts(lwidth(*1.5) lcolor(black) recast(rcap))) (lynching_black_smd, label(Lynching) msymbol(T) msize(medium) color(black) ciopts(lwidth(*1.5) lcolor(black) recast(rcap))) (naacp_pcb_black_smd, label(NAACP) msymbol(D) msize(medium) color(black) ciopts(lwidth(*1.5) lcolor(black) recast(rcap))) (urban_sh40_black_black_smd, label(Urban Black, 1940) msymbol(Th) msize(medium) color(black) ciopts(lwidth(*1.5) lcolor(black) recast(rcap))) (urban_sh40_white_black_smd, label(Urban white, 1940) msymbol(X) msize(medium) color(black) ciopts(lwidth(*1.5) lcolor(black) recast(rcap))) (avgempbla_black_smd, label(Average employment Black, 1940) msymbol(S) msize(medium) color(black) ciopts(lwidth(*1.5) lcolor(black) recast(rcap))) (avgempwhi_black_smd, label(Average employment white, 1940) msymbol(Sh) msize(medium) color(black) ciopts(lwidth(*1.5) lcolor(black) recast(rcap))) , keep(SMD_std_blsh60_lit) title("", size(vsmall) color(black)) levels(95) ytitle("(ln) registration rate") ylabel("") yscale(range(-0.02 0.02)) ylabel(-0.02(0.01)0.02) ylabels( , labs(small) labgap() format(%9.3f)) legend(off) yline(0, lpattern(dash)) xlabels(,nolabels noticks) graphregion(color(white)) vertical grid(none)
cd $output
graph export "figure_a5_a.pdf", replace
graph export "figure_a5_a.eps", replace

// Figure A5, Panel B
foreach var in $variables_quad {
xi: reg ch_ln_votreg_white_pct SMD_std_* SMD_std `var'_std_blsh60_lit `var'_std_blsh60 `var'_std `var'_std_lit black_share60_lit_nc black_share60 $controls_int ibn.STATE [aweight=pop1960], nocon robust cluster(judicial_divisions_id)
est sto `var'_white_smd
}

coefplot (kkk_pcw_white_smd, label(KKK) msymbol(Dh) msize(medium) color(black) ciopts(lwidth(*1.5) lcolor(black) recast(rcap))) (lynching_white_smd, label(Lynching) msymbol(T) msize(medium) color(black) ciopts(lwidth(*1.5) lcolor(black) recast(rcap))) (naacp_pcb_white_smd, label(NAACP) msymbol(D) msize(medium) color(black) ciopts(lwidth(*1.5) lcolor(black) recast(rcap))) (urban_sh40_black_white_smd, label(Urban Black, 1940) msymbol(Th) msize(medium) color(black) ciopts(lwidth(*1.5) lcolor(black) recast(rcap))) (urban_sh40_white_white_smd, label(Urban white, 1940) msymbol(X) msize(medium) color(black) ciopts(lwidth(*1.5) lcolor(black) recast(rcap))) (avgempbla_white_smd, label(Average employment Black, 1940) msymbol(S) msize(medium) color(black) ciopts(lwidth(*1.5) lcolor(black) recast(rcap))) (avgempwhi_white_smd, label(Average employment white, 1940) msymbol(Sh) msize(medium) color(black) ciopts(lwidth(*1.5) lcolor(black) recast(rcap))) , keep(SMD_std_blsh60_lit) title("", size(vsmall) color(black)) levels(95) ytitle("(ln) registration rate") ylabel("") yscale(range(-0.01 0.01)) ylabel(-0.01(0.005)0.01) ylabels( , labs(small) labgap() format(%9.3f)) legend(off) yline(0, lpattern(dash)) xlabels(,nolabels noticks) graphregion(color(white)) vertical grid(none)
cd $output
graph export "figure_a5_b.pdf", replace
graph export "figure_a5_b.eps", replace


/*
Figure A6. Race Riots and ethnic conflicts
*/

// Figure A6, Panel A
cd $dataset
use "dataset_riots.dta", clear

xi, prefix(Tr): xtreg dum_riot_carter $bl_sh_60_time_64_71 $bl_sh_60_time_64_71_lit $controls_figure_a6 i.STATE*i.year [aweight=pop60], fe robust cluster(judicial_divisions_id)
estimates store est

coefplot (est, ), keep( $bl_sh_60_time_64_71_lit ) levels(95) ylabel(, nogrid) graphregion(color(white)) vertical xline(1972.71, lwidth(0.2) lcolor(gray) lpatter(solid)) yline(0, lwidth(0.2) lpattern(dash) lcolor(cranberry)) format(%9.1f) color(black) lwidth(thick) ciopts(recast(rcap) lcolor(black) lwidth(medthin)) citop omitted ytitle("number of riots") yscale(range(-0.8 0.8)) ylabel(-0.8(0.4)0.8)
cd $output
graph export "figure_a6_a.pdf", replace
graph export "figure_a6_a.eps", replace


// Figure A6, Panel B
cd $dataset
use "dataset_conflicts.dta", clear

xi, prefix(Tr): xtreg dum $bl_sh_60_time_60_80 $bl_sh_60_time_60_80_lit $controls_figure_a6 i.STATE*i.year [aweight=pop60], fe robust cluster(judicial_divisions_id)
estimates store est

coefplot (est, ), keep( $bl_sh_60_time_60_80_lit ) levels(95) ylabel(, nogrid) graphregion(color(white)) vertical xline() yline(0, lwidth(0.2) lpattern(dash) lcolor(cranberry)) format(%9.1f) color(black) lwidth(thick) ciopts(recast(rcap) lcolor(black) lwidth(medthin)) citop omitted ytitle("number of conflicts") yscale(range(-2.0 2.0)) ylabel(-2.0(1.0)2.0) xlabel(1 "1960" 5 "1964" 9 "1968" 13 "1972" 17 "1976" 21 "1980", tick)
cd $output
graph export "figure_a6_b.pdf", replace
graph export "figure_a6_b.eps", replace



/*
Table A1. Robustness: Sample selection
*/
cd $dataset
use "dataset_robustness_1.dta", clear

// Panel A, column 1
xi: reg votreg_avail_56_80_black black_share60_lit_nc black_share60 $controls_int ibn.STATE [aweight=population60], cluster(judicial_divisions_id)
est sto bl_in_sample

quietly summarize votreg_avail_56_80_black [aweight=pop1960] if e(sample)
local y52_mn: dis %8.3fc r(mean)
local y52_sd = "(" + string(r(sd), "%8.3fc") + ")"
quietly summarize black_share60 [aweight=pop1960] if e(sample)
local x52_mn: dis %8.3fc r(mean)
local x52_sd = "(" + string(r(sd), "%8.3fc") + ")"

// Panel B, column 1
xi: reg votreg_avail_56_80_white black_share60_lit_nc black_share60 $controls_int ibn.STATE [aweight=population60], cluster(judicial_divisions_id)
est sto wh_in_sample

quietly summarize votreg_avail_56_80_white [aweight=pop1960] if e(sample)
local y53_mn: dis %8.3fc r(mean)
local y53_sd = "(" + string(r(sd), "%8.3fc") + ")"
quietly summarize black_share60 [aweight=pop1960] if e(sample)
local x53_mn: dis %8.3fc r(mean)
local x53_sd = "(" + string(r(sd), "%8.3fc") + ")"

// Panel A, column 2
xi: reg ch_ln_votreg_black_pct_pres black_share60_lit_nc black_share60 $controls_int ibn.STATE [aweight=pop1960] if ch_ln_votreg_black_pct_pres != . & ch_ln_votreg_white_pct_pres != . , nocon robust cluster(judicial_divisions_id)
est sto bl_bal

quietly summarize votreg_black_pct_presyears1960 [aweight=pop1960] if e(sample)
local y57_mn: dis %8.3fc r(mean)
local y57_sd = "(" + string(r(sd), "%8.3fc") + ")"
quietly summarize black_share60 [aweight=pop1960] if e(sample)
local x57_mn: dis %8.3fc r(mean)
local x57_sd = "(" + string(r(sd), "%8.3fc") + ")"

// Panel B, column 2
xi: reg ch_ln_votreg_white_pct_pres black_share60_lit_nc black_share60 $controls_int ibn.STATE [aweight=pop1960] if ch_ln_votreg_black_pct_pres != . & ch_ln_votreg_white_pct_pres != . , nocon robust cluster(judicial_divisions_id)
est sto wh_bal

quietly summarize votreg_white_pct_presyears1960 [aweight=pop1960] if e(sample)
local y58_mn: dis %8.3fc r(mean)
local y58_sd = "(" + string(r(sd), "%8.3fc") + ")"
quietly summarize black_share60 [aweight=pop1960] if e(sample)
local x58_mn: dis %8.3fc r(mean)
local x58_sd = "(" + string(r(sd), "%8.3fc") + ")"

// Panel A, column 3
xi: reg ch_ln_votreg_black_pct_pres black_share60_lit_nc black_share60 $controls_int ibn.STATE [aweight=pop1960] if tnt_pres_tot_1964 >= 40 & tnt_pres_tot_1964 <= 60 , nocon robust cluster(judicial_divisions_id)
est sto bl_turn_1

quietly summarize votreg_black_pct_presyears1960 [aweight=pop1960] if e(sample)
local y25_mn: dis %8.3fc r(mean)
local y25_sd = "(" + string(r(sd), "%8.3fc") + ")"
quietly summarize black_share60 [aweight=pop1960] if e(sample)
local x25_mn: dis %8.3fc r(mean)
local x25_sd = "(" + string(r(sd), "%8.3fc") + ")"

// Panel B, column 3
xi: reg ch_ln_votreg_white_pct_pres black_share60_lit_nc black_share60 $controls_int ibn.STATE [aweight=pop1960] if tnt_pres_tot_1964 >= 40 & tnt_pres_tot_1964 <= 60 , nocon robust cluster(judicial_divisions_id)
est sto wh_turn_1

quietly summarize votreg_white_pct_presyears1960 [aweight=pop1960] if e(sample)
local y26_mn: dis %8.3fc r(mean)
local y26_sd = "(" + string(r(sd), "%8.3fc") + ")"
quietly summarize black_share60 [aweight=pop1960] if e(sample)
local x26_mn: dis %8.3fc r(mean)
local x26_sd = "(" + string(r(sd), "%8.3fc") + ")"

// Panel A, column 4
xi: reg ch_ln_votreg_black_pct_pres black_share60_lit_nc black_share60 $controls_int ibn.STATE [aweight=pop1960] if tnt_pres_tot_1964 >= 45 & tnt_pres_tot_1964 <= 55 , nocon robust cluster(judicial_divisions_id)
est sto bl_turn_2

quietly summarize votreg_black_pct_presyears1960 [aweight=pop1960] if e(sample)
local y27_mn: dis %8.3fc r(mean)
local y27_sd = "(" + string(r(sd), "%8.3fc") + ")"
quietly summarize black_share60 [aweight=pop1960] if e(sample)
local x27_mn: dis %8.3fc r(mean)
local x27_sd = "(" + string(r(sd), "%8.3fc") + ")"

// Panel B, column 4
xi: reg ch_ln_votreg_white_pct_pres black_share60_lit_nc black_share60 $controls_int ibn.STATE [aweight=pop1960] if tnt_pres_tot_1964 >= 45 & tnt_pres_tot_1964 <= 55 , nocon robust cluster(judicial_divisions_id)
est sto wh_turn_2

quietly summarize votreg_white_pct_presyears1960 [aweight=pop1960] if e(sample)
local y28_mn: dis %8.3fc r(mean)
local y28_sd = "(" + string(r(sd), "%8.3fc") + ")"
quietly summarize black_share60 [aweight=pop1960] if e(sample)
local x28_mn: dis %8.3fc r(mean)
local x28_sd = "(" + string(r(sd), "%8.3fc") + ")"

// Table
cd $output

estout bl_in_sample bl_bal bl_turn_1 bl_turn_2 ///
using robustness_table_sample_selection.tex, replace type stats(r2_a  N, fmt(2 0) labels("Adj. R-Square" "N")) keep(black_share60_lit_nc black_share60) order(black_share60_lit_nc black_share60) cells("b(star label( ) fmt(3))" "se(par label( ) fmt(3))") mlabels(none) collabels(none) starlevels(* 0.10 ** 0.05 *** 0.01) nostardetach label msign (--) varwidth(12) modelwidth (10) style(tex) prehead("\begin{table}[ph!] \begin{center} \setlength\tabcolsep{6.0pt} \caption{Robustness: Sample selection} \label{robustness_table_sample_selection} \begin{threeparttable}\renewcommand{\arraystretch}{0.8}\small \begin{tabular}{p{0.27\textwidth}>{\centering}p{0.15\textwidth}>{\centering}p{0.15\textwidth}>{\centering}p{0.15\textwidth}>{\centering\arraybackslash}p{0.15\textwidth}} \toprule\midrule \textit{Dep. variable:} & \multicolumn{1}{c}{In Sample} & \multicolumn{3}{c}{(ln) Registration Rates} \\ \cmidrule(r){3-5} & & Balanced & Turnout & Turnout \\ & & Sample & 40\%-60\% & 45\%-55\% \\ \addlinespace & (1) & (2) & (3) & (4) \\ \cmidrule(r){1-2} \cmidrule(r){3-5} \multicolumn{3}{l}{\emph{Panel A: Black registration}} \\ \cmidrule(r){1-2} \cmidrule(r){3-5}") prefoot("\textit{Summary statistics:} \\ \cmidrule(r){1-2} \cmidrule(r){3-5} Dep. variable &`y52_mn'&`y57_mn'&`y25_mn'&`y27_mn' \\ &`y52_sd'&`y57_sd'&`y25_sd'&`y27_sd' \\ \addlinespace Black share, 1960 &`x52_mn'&`x57_mn'&`x25_mn'&`x27_mn' \\ &`x52_sd'&`x57_sd'&`x25_sd'&`x27_sd' \\ \cmidrule(r){1-2} \cmidrule(r){3-5} \addlinespace\addlinespace ")

estout wh_in_sample wh_bal wh_turn_1 wh_turn_2 ///
using robustness_table_sample_selection.tex, append type stats(r2_a  N, fmt(2 0) labels("Adj. R-Square" "N")) keep(black_share60_lit_nc black_share60) order(black_share60_lit_nc black_share60) cells("b(star label( ) fmt(3))" "se(par label( ) fmt(3))") mlabels(none) collabels(none) starlevels(* 0.10 ** 0.05 *** 0.01) nostardetach label msign (--) varwidth(12) modelwidth (10) style(tex) prehead("\addlinespace \cmidrule(r){1-2} \cmidrule(r){3-5} \multicolumn{3}{l}{\emph{Panel B: White registration}} \\ \cmidrule(r){1-2} \cmidrule(r){3-5}") prefoot("\textit{Summary statistics:} \\ \cmidrule(r){1-2} \cmidrule(r){3-5} Dep. variable &`y53_mn'&`y58_mn'&`y26_mn'&`y28_mn' \\ &`y53_sd'&`y58_sd'&`y26_sd'&`y28_sd' \\ \addlinespace Black share, 1960 &`x53_mn'&`x58_mn'&`x26_mn'&`x28_mn' \\ &`x53_sd'&`x58_sd'&`x26_sd'&`x28_sd' \\ \cmidrule(r){1-2} \cmidrule(r){3-5} \addlinespace\addlinespace ") postfoot("\midrule\bottomrule\end{tabular} \begin{tablenotes}[flushleft] \scriptsize \item \leavevmode\kern-\scriptspace\kern-\labelsep Notes: The table replicates the long difference model in equation \eqref{longdiff}: i) using a dummy for being in the sample in column (1); ii) restricting the sample to the counties with both Black and white voter registration data in column (2); iii) restricting the sample to the counties with a 1964 presidential turnout rate between 40\% and 60\%, and between 45\% and 55\%, respectively, in columns (3) and (4). Controls are: Low-skilled (\%), 1960; Unemployment rate (\%), 1960; Families below poverty line (\%), 1960; Rural farms (\%), 1960; Land devoted to harvested cotton (\%), 1959; Pro-Black protest, 1960-64; Anti-Black protest, 1960-64; Green Book establishments, 1955. Regressions are weighed by 1960 population, and robust standard errors in parenthesis are adjusted for clustering by judicial divisions. ***, **, and * indicate statistical significance at the 1\%, 5\%, and 10\% levels, respectively.\end{tablenotes} \end{threeparttable} \end{center} \end{table}")



/*
Table A2. Change in (ln) registration rates, 1980-1960
*/
cd $dataset
use "dataset_wide_2.dta", clear

// Panel A
xi: reg ch_ln_votreg_black_pct_pres black_share60_lit_nc black_share60 [aweight=pop1960], nocon robust cluster(judicial_divisions_id)
est sto bl_1

quietly summarize votreg_black_pct_presyears1960 [aweight=pop1960] if e(sample)
local y1_mn: dis %8.3fc r(mean)
local y1_sd = "(" + string(r(sd), "%8.3fc") + ")"
quietly summarize black_share60 [aweight=pop1960] if e(sample)
local x1_mn: dis %8.3fc r(mean)
local x1_sd = "(" + string(r(sd), "%8.3fc") + ")"

xi: reg ch_ln_votreg_black_pct_pres black_share60_lit_nc black_share60 family_less_3000 [aweight=pop1960], nocon robust cluster(judicial_divisions_id)
est sto bl_2

quietly summarize votreg_black_pct_presyears1960 [aweight=pop1960] if e(sample)
local y2_mn: dis %8.3fc r(mean)
local y2_sd = "(" + string(r(sd), "%8.3fc") + ")"
quietly summarize black_share60 [aweight=pop1960] if e(sample)
local x2_mn: dis %8.3fc r(mean)
local x2_sd = "(" + string(r(sd), "%8.3fc") + ")"

xi: reg ch_ln_votreg_black_pct_pres black_share60_lit_nc black_share60 family_less_3000 unemp60 [aweight=pop1960], nocon robust cluster(judicial_divisions_id)
est sto bl_3

quietly summarize votreg_black_pct_presyears1960 [aweight=pop1960] if e(sample)
local y3_mn: dis %8.3fc r(mean)
local y3_sd = "(" + string(r(sd), "%8.3fc") + ")"
quietly summarize black_share60 [aweight=pop1960] if e(sample)
local x3_mn: dis %8.3fc r(mean)
local x3_sd = "(" + string(r(sd), "%8.3fc") + ")"

xi: reg ch_ln_votreg_black_pct_pres black_share60_lit_nc black_share60 family_less_3000 unemp60 rural_farm60 [aweight=pop1960], nocon robust cluster(judicial_divisions_id)
est sto bl_4

quietly summarize votreg_black_pct_presyears1960 [aweight=pop1960] if e(sample)
local y4_mn: dis %8.3fc r(mean)
local y4_sd = "(" + string(r(sd), "%8.3fc") + ")"
quietly summarize black_share60 [aweight=pop1960] if e(sample)
local x4_mn: dis %8.3fc r(mean)
local x4_sd = "(" + string(r(sd), "%8.3fc") + ")"

xi: reg ch_ln_votreg_black_pct_pres black_share60_lit_nc black_share60 family_less_3000 unemp60 rural_farm60 cotton_share_acre [aweight=pop1960], nocon robust cluster(judicial_divisions_id)
est sto bl_5

quietly summarize votreg_black_pct_presyears1960 [aweight=pop1960] if e(sample)
local y5_mn: dis %8.3fc r(mean)
local y5_sd = "(" + string(r(sd), "%8.3fc") + ")"
quietly summarize black_share60 [aweight=pop1960] if e(sample)
local x5_mn: dis %8.3fc r(mean)
local x5_sd = "(" + string(r(sd), "%8.3fc") + ")"

xi: reg ch_ln_votreg_black_pct_pres black_share60_lit_nc black_share60 family_less_3000 unemp60 rural_farm60 cotton_share_acre ibn.STATE [aweight=pop1960], nocon robust cluster(judicial_divisions_id)
est sto bl_6

quietly summarize votreg_black_pct_presyears1960 [aweight=pop1960] if e(sample)
local y6_mn: dis %8.3fc r(mean)
local y6_sd = "(" + string(r(sd), "%8.3fc") + ")"
quietly summarize black_share60 [aweight=pop1960] if e(sample)
local x6_mn: dis %8.3fc r(mean)
local x6_sd = "(" + string(r(sd), "%8.3fc") + ")"

xi: reg ch_ln_votreg_black_pct_pres black_share60_lit_nc black_share60 family_less_3000 unemp60 rural_farm60 cotton_share_acre c.family_less_3000#literacy_nc c.unemp60#literacy_nc c.rural_farm60#literacy_nc c.cotton_share_acre#literacy_nc ibn.STATE [aweight=pop1960], nocon robust cluster(judicial_divisions_id)
est sto bl_7

quietly summarize votreg_black_pct_presyears1960 [aweight=pop1960] if e(sample)
local y7_mn: dis %8.3fc r(mean)
local y7_sd = "(" + string(r(sd), "%8.3fc") + ")"
quietly summarize black_share60 [aweight=pop1960] if e(sample)
local x7_mn: dis %8.3fc r(mean)
local x7_sd = "(" + string(r(sd), "%8.3fc") + ")"

// Panel B
xi: reg ch_ln_votreg_white_pct_pres black_share60_lit_nc black_share60 [aweight=pop1960], nocon robust cluster(judicial_divisions_id)
est sto wh_1

quietly summarize votreg_white_pct_presyears1960 [aweight=pop1960] if e(sample)
local y8_mn: dis %8.3fc r(mean)
local y8_sd = "(" + string(r(sd), "%8.3fc") + ")"
quietly summarize black_share60 [aweight=pop1960] if e(sample)
local x8_mn: dis %8.3fc r(mean)
local x8_sd = "(" + string(r(sd), "%8.3fc") + ")"

xi: reg ch_ln_votreg_white_pct_pres black_share60_lit_nc black_share60 family_less_3000 [aweight=pop1960], nocon robust cluster(judicial_divisions_id)
est sto wh_2

quietly summarize votreg_white_pct_presyears1960 [aweight=pop1960] if e(sample)
local y9_mn: dis %8.3fc r(mean)
local y9_sd = "(" + string(r(sd), "%8.3fc") + ")"
quietly summarize black_share60 [aweight=pop1960] if e(sample)
local x9_mn: dis %8.3fc r(mean)
local x9_sd = "(" + string(r(sd), "%8.3fc") + ")"

xi: reg ch_ln_votreg_white_pct_pres black_share60_lit_nc black_share60 family_less_3000 unemp60 [aweight=pop1960], nocon robust cluster(judicial_divisions_id)
est sto wh_3

quietly summarize votreg_white_pct_presyears1960 [aweight=pop1960] if e(sample)
local y10_mn: dis %8.3fc r(mean)
local y10_sd = "(" + string(r(sd), "%8.3fc") + ")"
quietly summarize black_share60 [aweight=pop1960] if e(sample)
local x10_mn: dis %8.3fc r(mean)
local x10_sd = "(" + string(r(sd), "%8.3fc") + ")"

xi: reg ch_ln_votreg_white_pct_pres black_share60_lit_nc black_share60 family_less_3000 unemp60 rural_farm60 [aweight=pop1960], nocon robust cluster(judicial_divisions_id)
est sto wh_4

quietly summarize votreg_white_pct_presyears1960 [aweight=pop1960] if e(sample)
local y11_mn: dis %8.3fc r(mean)
local y11_sd = "(" + string(r(sd), "%8.3fc") + ")"
quietly summarize black_share60 [aweight=pop1960] if e(sample)
local x11_mn: dis %8.3fc r(mean)
local x11_sd = "(" + string(r(sd), "%8.3fc") + ")"

xi: reg ch_ln_votreg_white_pct_pres black_share60_lit_nc black_share60 family_less_3000 unemp60 rural_farm60 cotton_share_acre [aweight=pop1960], nocon robust cluster(judicial_divisions_id)
est sto wh_5

quietly summarize votreg_white_pct_presyears1960 [aweight=pop1960] if e(sample)
local y12_mn: dis %8.3fc r(mean)
local y12_sd = "(" + string(r(sd), "%8.3fc") + ")"
quietly summarize black_share60 [aweight=pop1960] if e(sample)
local x12_mn: dis %8.3fc r(mean)
local x12_sd = "(" + string(r(sd), "%8.3fc") + ")"

xi: reg ch_ln_votreg_white_pct_pres black_share60_lit_nc black_share60 family_less_3000 unemp60 rural_farm60 cotton_share_acre ibn.STATE [aweight=pop1960], nocon robust cluster(judicial_divisions_id)
est sto wh_6

quietly summarize votreg_white_pct_presyears1960 [aweight=pop1960] if e(sample)
local y13_mn: dis %8.3fc r(mean)
local y13_sd = "(" + string(r(sd), "%8.3fc") + ")"
quietly summarize black_share60 [aweight=pop1960] if e(sample)
local x13_mn: dis %8.3fc r(mean)
local x13_sd = "(" + string(r(sd), "%8.3fc") + ")"

xi: reg ch_ln_votreg_white_pct_pres black_share60_lit_nc black_share60 family_less_3000 unemp60 rural_farm60 cotton_share_acre c.family_less_3000#literacy_nc c.unemp60#literacy_nc c.rural_farm60#literacy_nc c.cotton_share_acre#literacy_nc ibn.STATE [aweight=pop1960], nocon robust cluster(judicial_divisions_id)
est sto wh_7

quietly summarize votreg_white_pct_presyears1960 [aweight=pop1960] if e(sample)
local y14_mn: dis %8.3fc r(mean)
local y14_sd = "(" + string(r(sd), "%8.3fc") + ")"
quietly summarize black_share60 [aweight=pop1960] if e(sample)
local x14_mn: dis %8.3fc r(mean)
local x14_sd = "(" + string(r(sd), "%8.3fc") + ")"

// Table
cd $output
			estout bl_1 bl_2 bl_3 bl_4 bl_5 bl_6 bl_7 ///
			using one_by_one_ES.tex, replace type stats(r2_a  N, fmt(2 0) labels("Adj. R-Square" "N")) ///
			keep(black_share60_lit_nc black_share60) ///
			order(black_share60_lit_nc black_share60) ///
			cells("b(star label( ) fmt(3))" "se(par label( ) fmt(3))")    	///
			mlabels(none) collabels(none) starlevels(* 0.10 ** 0.05 *** 0.01) nostardetach label msign (--) varwidth(12) modelwidth (10) style(tex) ///
			prehead("\begin{table}[ph!] \begin{center} \setlength\tabcolsep{8.0pt} \caption{Change in (ln) registration rates, 1980-1960} \label{one_by_one_ES} \begin{threeparttable}\renewcommand{\arraystretch}{0.8}\footnotesize \begin{tabular}{@{}l c c c c c c c} \toprule\midrule \textit{Dep. variable:} & \multicolumn{7}{c}{(ln) Registration Rates} \\ \cmidrule(r){2-8} & \multicolumn{1}{c}{Black} & \multicolumn{1}{c}{Poverty} & \multicolumn{1}{c}{Unempl.} & \multicolumn{1}{c}{Rural} & \multicolumn{1}{c}{Cotton} & \multicolumn{1}{c}{State} & \multicolumn{1}{c}{Interaction} \\ & \multicolumn{1}{c}{Share} & \multicolumn{1}{c}{Rate} & \multicolumn{1}{c}{Rate} & \multicolumn{1}{c}{Farms} & \multicolumn{1}{c}{Produc.} & \multicolumn{1}{c}{FE} & \multicolumn{1}{c}{x VRA} \\ \addlinespace & (1) & (2) & (3) & (4) & (5) & (6) & (7) \\ \midrule \emph{Panel A: Black registration} \\ \midrule" ) ///
			prefoot("\textit{Summary statistics:} \\ \midrule Dep. variable &`y1_mn'&`y2_mn'&`y3_mn'&`y4_mn'&`y5_mn'&`y6_mn'&`y7_mn' \\ &`y1_sd'&`y2_sd'&`y3_sd'&`y4_sd'&`y5_sd'&`y6_sd'&`y7_sd' \\ \addlinespace Black share, 1960 &`x1_mn'&`x2_mn'&`x3_mn'&`x4_mn'&`x5_mn'&`x6_mn'&`x7_mn' \\ &`x1_sd'&`x2_sd'&`x3_sd'&`x4_sd'&`x5_sd'&`x6_sd'&`x7_sd' \\ \midrule \addlinespace \addlinespace")

			estout wh_1 wh_2 wh_3 wh_4 wh_5 wh_6 wh_7 ///
			using one_by_one_ES.tex, append type stats(r2_a  N, fmt(2 0) labels("Adj. R-Square" "N")) ///
			keep(black_share60_lit_nc black_share60) ///
			order(black_share60_lit_nc black_share60) ///
			cells("b(star label( ) fmt(3))" "se(par label( ) fmt(3))")    	///
			mlabels(none) collabels(none) starlevels(* 0.10 ** 0.05 *** 0.01) nostardetach label msign (--) varwidth(12) modelwidth (10) style(tex) ///
			prehead("\addlinespace \midrule \emph{Panel B: White registration} \\ \midrule" ) ///
			prefoot("\textit{Summary statistics:} \\ \midrule Dep. variable &`y8_mn'&`y9_mn'&`y10_mn'&`y11_mn'&`y12_mn'&`y13_mn'&`y14_mn' \\ &`y8_sd'&`y9_sd'&`y10_sd'&`y11_sd'&`y12_sd'&`y13_sd'&`y14_sd' \\ \addlinespace Black share, 1960 &`x8_mn'&`x9_mn'&`x10_mn'&`x11_mn'&`x12_mn'&`x13_mn'&`x14_mn' \\ &`x8_sd'&`x9_sd'&`x10_sd'&`x11_sd'&`x12_sd'&`x13_sd'&`x14_sd' \\ \midrule \addlinespace \addlinespace") ///
			postfoot("\midrule \bottomrule\end{tabular} \begin{tablenotes}[flushleft] \scriptsize \item \leavevmode\kern-\scriptspace\kern-\labelsep Notes: The table estimates the long difference model in equation \eqref{longdiff}. The dependent variable is the 1980-1960 change in the log of registration rates in Panels A and B. All regressions include the 1960 Black population share and its interaction with the coverage (VRA) dummy. Controls are added sequentially across columns: Families below poverty line (\%), 1960 in column (2); Unemployment rate (\%), 1960 in column (3); Rural farms (\%), 1960 in column (4); Land devoted to harvested cotton (\%), 1959 in column (5); state dummies in column (6); interactions between county controls and the coverage (VRA) dummy in column (7). Regressions are weighed by 1960 population, and robust standard errors in parenthesis are adjusted for clustering by judicial divisions. ***, **, and * indicate statistical significance at the 1\%, 5\%, and 10\% levels, respectively.\end{tablenotes} \end{threeparttable} \end{center} \end{table}")


/*
Table A3. Change in the gap of (ln) registration rates, 1980-1960
*/
cd $dataset
use "dataset_wide_2.dta", clear

// Column 1
xi: reg ch_ln_gap_black_white black_share60_lit_nc black_share60 c.family_less_3000#literacy_nc c.unemp60#literacy_nc c.rural_farm60#literacy_nc c.cotton_share_acre#literacy_nc ibn.STATE [aweight=pop1960], nocon robust cluster(judicial_divisions_id)
est sto gap_1

gen gap_1960 = votreg_black_pct_presyears1960 - votreg_white_pct_presyears1960 if e(sample)

quietly summarize gap_1960 [aweight=pop1960] if e(sample)
local y9_mn: dis %8.3fc r(mean)
local y9_sd = "(" + string(r(sd), "%8.3fc") + ")"
quietly summarize black_share60 [aweight=pop1960] if e(sample)
local x9_mn: dis %8.3fc r(mean)
local x9_sd = "(" + string(r(sd), "%8.3fc") + ")"

// Column 2
xi: reg ch_ln_gap_black_white black_share60_lit_nc black_share60 c.family_less_3000#literacy_nc c.unemp60#literacy_nc c.rural_farm60#literacy_nc c.cotton_share_acre#literacy_nc c.school_low#literacy_nc ibn.STATE [aweight=pop1960], nocon robust cluster(judicial_divisions_id)
est sto gap_2

quietly summarize gap_1960 [aweight=pop1960] if e(sample)
local y10_mn: dis %8.3fc r(mean)
local y10_sd = "(" + string(r(sd), "%8.3fc") + ")"
quietly summarize black_share60 [aweight=pop1960] if e(sample)
local x10_mn: dis %8.3fc r(mean)
local x10_sd = "(" + string(r(sd), "%8.3fc") + ")"

// Column 3
xi: reg ch_ln_gap_black_white black_share60_lit_nc black_share60 c.family_less_3000#literacy_nc c.unemp60#literacy_nc c.rural_farm60#literacy_nc c.cotton_share_acre#literacy_nc c.school_low#literacy_nc c.pro_black_county#literacy_nc c.anti_black_county#literacy_nc ibn.STATE [aweight=pop1960], nocon robust cluster(judicial_divisions_id)
est sto gap_3

quietly summarize gap_1960 [aweight=pop1960] if e(sample)
local y11_mn: dis %8.3fc r(mean)
local y11_sd = "(" + string(r(sd), "%8.3fc") + ")"
quietly summarize black_share60 [aweight=pop1960] if e(sample)
local x11_mn: dis %8.3fc r(mean)
local x11_sd = "(" + string(r(sd), "%8.3fc") + ")"

// Column 4
xi: reg ch_ln_gap_black_white black_share60_lit_nc black_share60 c.family_less_3000#literacy_nc c.unemp60#literacy_nc c.rural_farm60#literacy_nc c.cotton_share_acre#literacy_nc c.school_low#literacy_nc c.pro_black_county#literacy_nc c.anti_black_county#literacy_nc c.gb_tot_1955_b#literacy_nc ibn.STATE [aweight=pop1960], nocon robust cluster(judicial_divisions_id)
est sto gap_4

quietly summarize gap_1960 [aweight=pop1960] if e(sample)
local y12_mn: dis %8.3fc r(mean)
local y12_sd = "(" + string(r(sd), "%8.3fc") + ")"
quietly summarize black_share60 [aweight=pop1960] if e(sample)
local x12_mn: dis %8.3fc r(mean)
local x12_sd = "(" + string(r(sd), "%8.3fc") + ")"

// Table
cd $output
estout gap_1 gap_2 gap_3 gap_4 using from_ES_to_full_gap.tex, replace type stats(r2_a  N, fmt(2 0) labels("Adj. R-Square" "N")) keep(black_share60_lit_nc black_share60) order(black_share60_lit_nc black_share60) cells("b(star label( ) fmt(3))" "se(par label( ) fmt(3))") mlabels(none) collabels(none) starlevels(* 0.10 ** 0.05 *** 0.01) nostardetach label msign (--) varwidth(12) modelwidth (10) style(tex) prehead("\begin{table}[ph!] \begin{center} \setlength\tabcolsep{12.0pt} \caption{Change in the gap of (ln) registration rates, 1980-1960} \label{from_ES_to_full_gap} \begin{threeparttable}\renewcommand{\arraystretch}{0.8}\footnotesize \begin{tabular}{p{0.25\textwidth}>{\centering}p{0.11\textwidth}>{\centering}p{0.11\textwidth}>{\centering}p{0.11\textwidth}>{\centering\arraybackslash}p{0.11\textwidth}} \toprule\midrule \textit{Dep. variable:} & \multicolumn{4}{c}{Gap in (ln) Registration Rates} \\ \cmidrule(r){2-5} & \multicolumn{1}{c}{Event} & \multicolumn{1}{c}{Less Than} & \multicolumn{1}{c}{Pro-, Anti-} & \multicolumn{1}{c}{Green} \\ & \multicolumn{1}{c}{Study} & \multicolumn{1}{c}{High School} & \multicolumn{1}{c}{Black Protests} & \multicolumn{1}{c}{Books} \\ \addlinespace & (1) & (2) & (3) & (4) \\ \midrule" ) prefoot("\textit{Summary statistics:} \\ \midrule Dep. variable &`y9_mn'&`y10_mn'&`y11_mn'&`y12_mn' \\ &`y9_sd'&`y10_sd'&`y11_sd'&`y12_sd' \\ \addlinespace Black share, 1960 &`x9_mn'&`x10_mn'&`x11_mn'&`x12_mn' \\ &`x9_sd'&`x10_sd'&`x11_sd'&`x12_sd' \\ \midrule \addlinespace \addlinespace") postfoot("\midrule \bottomrule\end{tabular} \begin{tablenotes}[flushleft] \scriptsize \item \leavevmode\kern-\scriptspace\kern-\labelsep Notes: The table estimates the long difference model in equation \eqref{longdiff}. The dependent variable is the 1980-1960 change in the difference in the log of Black and white registration rates. All regressions include state dummies, the 1960 Black population share, and its interaction with the coverage (VRA) dummy. Regressions also include interactions between county controls and the coverage (VRA) dummy. Controls in column (1) are: Unemployment rate (\%), 1960; Families below poverty line (\%), 1960; Rural farms (\%), 1960; Land devoted to harvested cotton (\%), 1959. Controls are added sequentially across columns: Low-skilled (\%), 1960 in column (2); Pro-Black protest, 1960-64 and Anti-Black protest, 1960-64 in column (3); Green Book establishments, 1955 in column (4). Regressions are weighed by 1960 population, and robust standard errors in parenthesis are adjusted for clustering by judicial divisions. ***, **, and * indicate statistical significance at the 1\%, 5\%, and 10\% levels, respectively.\end{tablenotes} \end{threeparttable} \end{center} \end{table}")



/*
Table A4. Evidence from local newspapers: Mentions of elected officials
*/
cd $dataset
use "dataset_newspapers_2.dta", clear

// Column 1
xi: reg prob_b black_share60_lit black_share60 $controls_int ibn.STATE [aweight=pop1960], nocon robust cluster(judicial_divisions_id)
est sto prob_b

quietly summarize prob_b [aweight=pop1960] if e(sample)
local y1_mn: dis %8.3fc r(mean)
local y1_sd = "(" + string(r(sd), "%8.3fc") + ")"
quietly summarize black_share60 [aweight=pop1960] if e(sample)
local x1_mn: dis %8.3fc r(mean)
local x1_sd = "(" + string(r(sd), "%8.3fc") + ")"

// Column 2
xi: reg prob_w black_share60_lit black_share60 $controls_int ibn.STATE [aweight=pop1960], nocon robust cluster(judicial_divisions_id)
est sto prob_w

quietly summarize prob_w [aweight=pop1960] if e(sample)
local y2_mn: dis %8.3fc r(mean)
local y2_sd = "(" + string(r(sd), "%8.3fc") + ")"
quietly summarize black_share60 [aweight=pop1960] if e(sample)
local x2_mn: dis %8.3fc r(mean)
local x2_sd = "(" + string(r(sd), "%8.3fc") + ")"

// Column 4
xi: reg dummy_b black_share60_lit black_share60 $controls_int ibn.STATE [aweight=pop1960], nocon robust cluster(judicial_divisions_id)
est sto dummy_b

quietly summarize dummy_b [aweight=pop1960] if e(sample)
local y4_mn: dis %8.3fc r(mean)
local y4_sd = "(" + string(r(sd), "%8.3fc") + ")"
quietly summarize black_share60 [aweight=pop1960] if e(sample)
local x4_mn: dis %8.3fc r(mean)
local x4_sd = "(" + string(r(sd), "%8.3fc") + ")"

// Column 5
xi: reg dummy_w black_share60_lit black_share60 $controls_int ibn.STATE [aweight=pop1960], nocon robust cluster(judicial_divisions_id)
est sto dummy_w

quietly summarize dummy_w [aweight=pop1960] if e(sample)
local y5_mn: dis %8.3fc r(mean)
local y5_sd = "(" + string(r(sd), "%8.3fc") + ")"
quietly summarize black_share60 [aweight=pop1960] if e(sample)
local x5_mn: dis %8.3fc r(mean)
local x5_sd = "(" + string(r(sd), "%8.3fc") + ")"

// Stacked mentions
expand 2, gen(dupindicator)
sort county dupindicator
order dupindicator, before(county_name)
rename dupindicator black_stacked
gen prob_stacked = prob_w if black_stacked == 0
replace prob_stacked = prob_b if black_stacked == 1
gen dummy_stacked = dummy_w if black_stacked == 0
replace dummy_stacked = dummy_b if black_stacked == 1
order prob_stacked dummy_stacked, before(prob_all)

gen black_share60_lit_black = black_share60 * literacy_nc * black_stacked
gen lit_black = literacy_nc * black_stacked
gen black_share60_black = black_share60 * black_stacked
label var black_share60_lit_black "Black 1960 * VRA * Black dummy"
label var lit_black "VRA * Black dummy"
label var black_share60_black "Black 1960 * Black dummy"
label var black_stacked "Black dummy"
label var black_share60_lit_black "Black share, 1960 X VRA X Race"
label var prob_stacked "Probability of mentions, stacked"
label var dummy_stacked "Dummy of mentions, stacked"

// Column 3
xi: reg prob_stacked black_share60_lit_black black_stacked lit_black black_share60_black black_share60_lit black_share60 $controls_int ibn.STATE [aweight=pop1960], nocon robust cluster(judicial_divisions_id)
est sto prob_stacked

quietly summarize prob_stacked [aweight=pop1960] if e(sample)
local y3_mn: dis %8.3fc r(mean)
local y3_sd = "(" + string(r(sd), "%8.3fc") + ")"
quietly summarize black_share60 [aweight=pop1960] if e(sample)
local x3_mn: dis %8.3fc r(mean)
local x3_sd = "(" + string(r(sd), "%8.3fc") + ")"

// Column 6
xi: reg dummy_stacked black_share60_lit_black black_stacked lit_black black_share60_black black_share60_lit black_share60 $controls_int ibn.STATE [aweight=pop1960], nocon robust cluster(judicial_divisions_id)
est sto dummy_stacked

quietly summarize dummy_stacked [aweight=pop1960] if e(sample)
local y6_mn: dis %8.3fc r(mean)
local y6_sd = "(" + string(r(sd), "%8.3fc") + ")"
quietly summarize black_share60 [aweight=pop1960] if e(sample)
local x6_mn: dis %8.3fc r(mean)
local x6_sd = "(" + string(r(sd), "%8.3fc") + ")"

// Table
cd $output

estout prob_b prob_w prob_stacked dummy_b dummy_w dummy_stacked using mentions_officials.tex, replace type stats(r2_a  N, fmt(2 0) labels("Adj. R-Square" "N")) keep(black_share60_lit black_share60 black_share60_lit_black) order(black_share60_lit black_share60 black_share60_lit_black) cells("b(star label( ) fmt(3))" "se(par label( ) fmt(3))") mlabels(none) collabels(none) starlevels(* 0.10 ** 0.05 *** 0.01) nostardetach label msign (--) varwidth(12) modelwidth (10) style(tex) prehead("\begin{table}[ph!] \begin{center} \setlength\tabcolsep{8.0pt} \caption{Evidence from local newspapers: Mentions of elected officials} \label{mentions_officials} \begin{threeparttable}\renewcommand{\arraystretch}{0.8}\footnotesize \begin{tabular}{p{0.29\textwidth}>{\centering}p{0.07\textwidth}>{\centering}p{0.07\textwidth}>{\centering}p{0.07\textwidth}>{\centering}p{0.07\textwidth}>{\centering}p{0.07\textwidth}>{\centering\arraybackslash}p{0.07\textwidth}} \toprule\midrule \textit{Dep. variable:} & \multicolumn{6}{c}{County Governing Bodies} \\ \cmidrule(r){2-7} & \multicolumn{3}{c}{Mentions/Board Members} & \multicolumn{3}{c}{1[At Least One Mention]} \\ \cmidrule(r){2-4} \cmidrule(r){5-7} & Black & White & Stacked & Black & White & Stacked \\ \addlinespace & (1) & (2) & (3) & (4) & (5) & (6) \\ \midrule") prefoot("\textit{Summary statistics:} \\ \midrule Dep. variable &`y1_mn' & `y2_mn' & `y3_mn' & `y4_mn' & `y5_mn' & `y6_mn' \\ &`y1_sd' & `y2_sd' & `y3_sd' & `y4_sd' & `y5_sd' & `y6_sd' \\ \addlinespace Black share, 1960 &`x1_mn' & `x2_mn' & `x3_mn' & `x4_mn' & `x5_mn' & `x6_mn' \\ &`x1_sd'&`x2_sd'&`x3_sd'&`x4_sd'&`x5_sd'&`x6_sd'\\ \midrule \addlinespace\addlinespace ") postfoot("\midrule \bottomrule\end{tabular} \begin{tablenotes}[flushleft] \scriptsize \item \leavevmode\kern-\scriptspace\kern-\labelsep Notes: The table replicates the long difference model in equation \eqref{longdiff} using as dependent variable the probability of being mentioned in the local press during election time, for counties that elect a Black official in their county governing bodies for the first time. For columns (1) and (2), the variable is the probability, calculated as the number of Black (resp., white) officials that are mentioned in the local press, out of all Black (resp., white) officials that are elected to the board. For columns (4) and (5), the variable is an indicator equal to 1 whenever the probability of being mentioned is non-zero, and zero otherwise. Columns (3) and (6) present a fully-saturated regression on the stacked dataset. All regressions include state dummies, the 1960 Black population share, and its interaction with the coverage (VRA) dummy. Regressions also include interactions between county controls and the coverage (VRA) dummy. Controls are: Low-skilled (\%), 1960; Unemployment rate (\%), 1960; Families below poverty line (\%), 1960; Rural farms (\%), 1960; Land devoted to harvested cotton (\%), 1959; Pro-Black protest, 1960-64; Anti-Black protest, 1960-64; Green Book establishments, 1955. Regressions are weighed by 1960 population, and robust standard errors in parenthesis are adjusted for clustering by judicial divisions. ***, **, and * indicate statistical significance at the 1\%, 5\%, and 10\% levels, respectively.\end{tablenotes} \end{threeparttable} \end{center} \end{table}")



/*
Table A5. Changes in white population and its characteristics
*/
cd $dataset
use "dataset_county_characteristics_1.dta", clear

// Column 1
xi: reg diff_whtot_60_80 black_share60_lit_nc black_share60 $controls_int ibn.STATE [aweight=pop1960] , nocon robust cluster(judicial_divisions_id)
est sto diff_whtot_60_80

gen whtot_1960_1000 = whtot_1960 / 1000

quietly summarize whtot_1960_1000 [aweight=pop1960] if e(sample)
local y1_mn: dis %8.3fc r(mean)
local y1_sd = "(" + string(r(sd), "%8.3fc") + ")"
quietly summarize black_share60 [aweight=pop1960] if e(sample)
local x1_mn: dis %8.3fc r(mean)
local x1_sd = "(" + string(r(sd), "%8.3fc") + ")"

// Column 2
xi: reg diffwhiteshare_60_80 black_share60_lit_nc black_share60 $controls_int ibn.STATE [aweight=pop1960] , nocon robust cluster(judicial_divisions_id)
est sto diffwhiteshare_60_80

quietly summarize white_share_1960 [aweight=pop1960] if e(sample)
local y2_mn: dis %8.3fc r(mean)
local y2_sd = "(" + string(r(sd), "%8.3fc") + ")"
quietly summarize black_share60 [aweight=pop1960] if e(sample)
local x2_mn: dis %8.3fc r(mean)
local x2_sd = "(" + string(r(sd), "%8.3fc") + ")"

// Column 3
xi: reg c_sh_white_unempl_rate black_share60_lit_nc black_share60 $controls_int ibn.STATE [aweight=pop1960] , nocon robust cluster(judicial_divisions_id)
est sto c_sh_white_unempl_rate

quietly summarize white_unemployment_rate_1960 [aweight=pop1960] if e(sample)
local y3_mn: dis %8.3fc r(mean)
local y3_sd = "(" + string(r(sd), "%8.3fc") + ")"
quietly summarize black_share60 [aweight=pop1960] if e(sample)
local x3_mn: dis %8.3fc r(mean)
local x3_sd = "(" + string(r(sd), "%8.3fc") + ")"

// Column 4
xi: reg c_sh_white_poverty black_share60_lit_nc black_share60 $controls_int ibn.STATE [aweight=pop1960] , nocon robust cluster(judicial_divisions_id)
est sto c_sh_white_poverty

quietly summarize white_poverty_1960 [aweight=pop1960] if e(sample)
local y4_mn: dis %8.3fc r(mean)
local y4_sd = "(" + string(r(sd), "%8.3fc") + ")"
quietly summarize black_share60 [aweight=pop1960] if e(sample)
local x4_mn: dis %8.3fc r(mean)
local x4_sd = "(" + string(r(sd), "%8.3fc") + ")"

// Column 5
xi: reg c_sh_white_below_hs black_share60_lit_nc black_share60 $controls_int ibn.STATE [aweight=pop1960] , nocon robust cluster(judicial_divisions_id)
est sto c_sh_white_below_hs

quietly summarize white_below_high_school_1960 [aweight=pop1960] if e(sample)
local y5_mn: dis %8.3fc r(mean)
local y5_sd = "(" + string(r(sd), "%8.3fc") + ")"
quietly summarize black_share60 [aweight=pop1960] if e(sample)
local x5_mn: dis %8.3fc r(mean)
local x5_sd = "(" + string(r(sd), "%8.3fc") + ")"


// Table
cd $output
estout diff_whtot_60_80 diffwhiteshare_60_80 c_sh_white_unempl_rate c_sh_white_poverty c_sh_white_below_hs using new_long_diff_table.tex, replace type stats(r2_a  N, fmt(2 0) labels("Adj. R-Square" "N")) keep(black_share60_lit_nc black_share60) order(black_share60_lit_nc black_share60) cells("b(star label( ) fmt(3))" "se(par label( ) fmt(3))") mlabels(none) collabels(none) starlevels(* 0.10 ** 0.05 *** 0.01) nostardetach label msign (--) varwidth(12) modelwidth (10) style(tex) prehead("\begin{table}[ph!] \begin{center} \setlength\tabcolsep{8.0pt} \caption{Changes in white population and its characteristics} \label{new_long_diff_table} \begin{threeparttable}\renewcommand{\arraystretch}{0.8}\footnotesize \begin{tabular}{p{0.21\textwidth}>{\centering}p{0.11\textwidth}>{\centering}p{0.11\textwidth}>{\centering}p{0.11\textwidth}>{\centering}p{0.11\textwidth}>{\centering\arraybackslash}p{0.11\textwidth}} \toprule\midrule \textit{Dep. variable:} & White & White & White & White & White \\ & Population & Population & Unemployment & Poverty & Less Than \\ & & Share & Rate & Rate & High School \\ \addlinespace & (1) & (2) & (3) & (4) & (5) \\ \midrule") prefoot("\textit{Summary statistics:} \\ \midrule Dep. variable &`y1_mn' & `y2_mn' & `y3_mn' & `y4_mn' & `y5_mn' \\ &`y1_sd' & `y2_sd' & `y3_sd' & `y4_sd' & `y5_sd' \\ \addlinespace Black share, 1960 &`x1_mn' & `x2_mn' & `x3_mn' & `x4_mn' & `x5_mn' \\ &`x1_sd'&`x2_sd'&`x3_sd'&`x4_sd'&`x5_sd' \\ \midrule \addlinespace\addlinespace ") postfoot("\midrule \bottomrule\end{tabular} \begin{tablenotes}[flushleft] \scriptsize \item \leavevmode\kern-\scriptspace\kern-\labelsep Notes: The table replicates the long difference model in equation \eqref{longdiff} using as dependent variable the change in the variable reported at the top of each column. For all columns, the change is measured over the 1980-1960 period. The dependent variable at baseline that is presented in column (1) shows the population in 1,000 people. All regressions include state dummies, the 1960 Black population share, and its interaction with the coverage (VRA) dummy. Regressions also include interactions between county controls and the coverage (VRA) dummy. Controls are: Low-skilled (\%), 1960; Unemployment rate (\%), 1960; Families below poverty line (\%), 1960; Rural farms (\%), 1960; Land devoted to harvested cotton (\%), 1959; Pro-Black protest, 1960-64; Anti-Black protest, 1960-64; Green Book establishments, 1955. Regressions are weighed by 1960 population, and robust standard errors in parenthesis are adjusted for clustering by judicial divisions. ***, **, and * indicate statistical significance at the 1\%, 5\%, and 10\% levels, respectively.\end{tablenotes} \end{threeparttable} \end{center} \end{table}")



/*
Table A6. Riots and conflicts
*/
cd $dataset
use "dataset_county_characteristics_1.dta", clear

// Column 1
xi: reg dum_riot_carter black_share60_lit_nc black_share60 $controls_int ibn.STATE [aweight=pop1960] , nocon robust cluster(judicial_divisions_id)
est sto dum_riot_carter

quietly summarize dum_riot_carter [aweight=pop1960] if e(sample)
local y1_mn: dis %8.3fc r(mean)
local y1_sd = "(" + string(r(sd), "%8.3fc") + ")"
quietly summarize black_share60 [aweight=pop1960] if e(sample)
local x1_mn: dis %8.3fc r(mean)
local x1_sd = "(" + string(r(sd), "%8.3fc") + ")"

// Column 2
xi: reg ch_conflict_black_nonv_8060 black_share60_lit_nc black_share60 $controls_int ibn.STATE [aweight=pop1960] , nocon robust cluster(judicial_divisions_id)
est sto ch_conflict_black_nonv_8060

quietly summarize conflict_black_nonv_6064 [aweight=pop1960] if e(sample)
local y2_mn: dis %8.3fc r(mean)
local y2_sd = "(" + string(r(sd), "%8.3fc") + ")"
quietly summarize black_share60 [aweight=pop1960] if e(sample)
local x2_mn: dis %8.3fc r(mean)
local x2_sd = "(" + string(r(sd), "%8.3fc") + ")"

// Column 3
xi: reg ch_riot_black_8060 black_share60_lit_nc black_share60 $controls_int ibn.STATE [aweight=pop1960] , nocon robust cluster(judicial_divisions_id)
est sto ch_riot_black_8060

quietly summarize riot_black_6064 [aweight=pop1960] if e(sample)
local y3_mn: dis %8.3fc r(mean)
local y3_sd = "(" + string(r(sd), "%8.3fc") + ")"
quietly summarize black_share60 [aweight=pop1960] if e(sample)
local x3_mn: dis %8.3fc r(mean)
local x3_sd = "(" + string(r(sd), "%8.3fc") + ")"

// Column 4
xi: reg ch_conflict_black_v_8060 black_share60_lit_nc black_share60 $controls_int ibn.STATE [aweight=pop1960] , nocon robust cluster(judicial_divisions_id)
est sto ch_conflict_black_v_8060

quietly summarize conflict_black_v_6064 [aweight=pop1960] if e(sample)
local y4_mn: dis %8.3fc r(mean)
local y4_sd = "(" + string(r(sd), "%8.3fc") + ")"
quietly summarize black_share60 [aweight=pop1960] if e(sample)
local x4_mn: dis %8.3fc r(mean)
local x4_sd = "(" + string(r(sd), "%8.3fc") + ")"

// Column 5
xi: reg ch_pro_black_8060 black_share60_lit_nc black_share60 $controls_int_no_protests ibn.STATE [aweight=pop1960] , nocon robust cluster(judicial_divisions_id)
est sto ch_pro_black_8060

quietly summarize pro_black_6064 [aweight=pop1960] if e(sample)
local y5_mn: dis %8.3fc r(mean)
local y5_sd = "(" + string(r(sd), "%8.3fc") + ")"
quietly summarize black_share60 [aweight=pop1960] if e(sample)
local x5_mn: dis %8.3fc r(mean)
local x5_sd = "(" + string(r(sd), "%8.3fc") + ")"

// Table
cd $output
estout dum_riot_carter ch_conflict_black_nonv_8060 ch_riot_black_8060 ch_conflict_black_v_8060 ch_pro_black_8060 using table_riots_conflicts.tex, replace type stats(r2_a  N, fmt(2 0) labels("Adj. R-Square" "N")) keep(black_share60_lit_nc black_share60) order(black_share60_lit_nc black_share60) cells("b(star label( ) fmt(3))" "se(par label( ) fmt(3))") mlabels(none) collabels(none) starlevels(* 0.10 ** 0.05 *** 0.01) nostardetach label msign (--) varwidth(12) modelwidth (10) style(tex) prehead("\begin{table}[ph!] \begin{center} \setlength\tabcolsep{8.0pt} \caption{Riots and conflicts} \label{table_riots_conflicts} \begin{threeparttable}\renewcommand{\arraystretch}{0.8}\footnotesize \begin{tabular}{p{0.21\textwidth}>{\centering}p{0.11\textwidth}>{\centering}p{0.11\textwidth}>{\centering}p{0.11\textwidth}>{\centering}p{0.11\textwidth}>{\centering\arraybackslash}p{0.11\textwidth}} \toprule\midrule \textit{Dep. variable:} & Race & Non-violent & Riots & Violent & Pro-Black \\ & Riots & Collective & & Conflicts & Protests \\ & & Events & & & \\ \addlinespace & (1) & (2) & (3) & (4) & (5) \\ \midrule") prefoot("\textit{Summary statistics:} \\ \midrule Dep. variable &`y1_mn' & `y2_mn' & `y3_mn' & `y4_mn' & `y5_mn' \\ &`y1_sd' & `y2_sd' & `y3_sd' & `y4_sd' & `y5_sd' \\ \addlinespace Black share, 1960 &`x1_mn' & `x2_mn' & `x3_mn' & `x4_mn' & `x5_mn' \\ &`x1_sd'&`x2_sd'&`x3_sd'&`x4_sd'&`x5_sd' \\ \midrule \addlinespace\addlinespace ") postfoot("\midrule \bottomrule\end{tabular} \begin{tablenotes}[flushleft] \scriptsize \item \leavevmode\kern-\scriptspace\kern-\labelsep Notes: The table replicates the long difference model in equation \eqref{longdiff}. For column (1), the dependent variable measures all the Race Riots that occurred between 1965 and 1971. For columns (2) to (5), all variables are measured as the change in the average values between 1976 and 1980 with the average values between 1960 and 1964. Non-violent collective events led by African Americans include: meeting or rally; picketing. Violent conflicts led by African Americans include: spontaneous disruption; boycott; riot; ethnic vandalism. All dependent variables are multiplied by 100. All regressions include state dummies, the 1960 Black population share, and its interaction with the coverage (VRA) dummy. Regressions also include interactions between county controls and the coverage (VRA) dummy. Controls are: Low-skilled (\%), 1960; Unemployment rate (\%), 1960; Families below poverty line (\%), 1960; Rural farms (\%), 1960; Land devoted to harvested cotton (\%), 1959; Pro-Black protest, 1960-64; Anti-Black protest, 1960-64; Green Book establishments, 1955. Regressions are weighed by 1960 population, and robust standard errors in parenthesis are adjusted for clustering by judicial divisions. ***, **, and * indicate statistical significance at the 1\%, 5\%, and 10\% levels, respectively.\end{tablenotes} \end{threeparttable} \end{center} \end{table}")


































